home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / net / URLConnection.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  10.7 KB  |  626 lines

  1. package java.net;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.security.AccessController;
  7. import java.security.Permission;
  8. import java.util.Collections;
  9. import java.util.Date;
  10. import java.util.Hashtable;
  11. import java.util.List;
  12. import java.util.Map;
  13. import java.util.StringTokenizer;
  14. import sun.net.www.MessageHeader;
  15. import sun.net.www.MimeTable;
  16. import sun.security.action.GetPropertyAction;
  17. import sun.security.util.SecurityConstants;
  18.  
  19. public abstract class URLConnection {
  20.    protected URL url;
  21.    protected boolean doInput = true;
  22.    protected boolean doOutput = false;
  23.    private static boolean defaultAllowUserInteraction = false;
  24.    protected boolean allowUserInteraction;
  25.    private static boolean defaultUseCaches = true;
  26.    protected boolean useCaches;
  27.    protected long ifModifiedSince;
  28.    protected boolean connected;
  29.    private int connectTimeout;
  30.    private int readTimeout;
  31.    private MessageHeader requests;
  32.    private static FileNameMap fileNameMap;
  33.    private static boolean fileNameMapLoaded = false;
  34.    static ContentHandlerFactory factory;
  35.    private static Hashtable handlers = new Hashtable();
  36.    private static final ContentHandler UnknownContentHandlerP = new UnknownContentHandler();
  37.    private static final String contentClassPrefix = "sun.net.www.content";
  38.    private static final String contentPathProp = "java.content.handler.pkgs";
  39.  
  40.    public static synchronized FileNameMap getFileNameMap() {
  41.       if (fileNameMap == null && !fileNameMapLoaded) {
  42.          fileNameMap = MimeTable.loadTable();
  43.          fileNameMapLoaded = true;
  44.       }
  45.  
  46.       return new 1();
  47.    }
  48.  
  49.    public static void setFileNameMap(FileNameMap var0) {
  50.       SecurityManager var1 = System.getSecurityManager();
  51.       if (var1 != null) {
  52.          var1.checkSetFactory();
  53.       }
  54.  
  55.       fileNameMap = var0;
  56.    }
  57.  
  58.    public abstract void connect() throws IOException;
  59.  
  60.    public void setConnectTimeout(int var1) {
  61.       if (var1 < 0) {
  62.          throw new IllegalArgumentException("timeout can not be negative");
  63.       } else {
  64.          this.connectTimeout = var1;
  65.       }
  66.    }
  67.  
  68.    public int getConnectTimeout() {
  69.       return this.connectTimeout;
  70.    }
  71.  
  72.    public void setReadTimeout(int var1) {
  73.       if (var1 < 0) {
  74.          throw new IllegalArgumentException("timeout can not be negative");
  75.       } else {
  76.          this.readTimeout = var1;
  77.       }
  78.    }
  79.  
  80.    public int getReadTimeout() {
  81.       return this.readTimeout;
  82.    }
  83.  
  84.    protected URLConnection(URL var1) {
  85.       this.allowUserInteraction = defaultAllowUserInteraction;
  86.       this.useCaches = defaultUseCaches;
  87.       this.ifModifiedSince = 0L;
  88.       this.connected = false;
  89.       this.url = var1;
  90.    }
  91.  
  92.    public URL getURL() {
  93.       return this.url;
  94.    }
  95.  
  96.    public int getContentLength() {
  97.       return this.getHeaderFieldInt("content-length", -1);
  98.    }
  99.  
  100.    public String getContentType() {
  101.       return this.getHeaderField("content-type");
  102.    }
  103.  
  104.    public String getContentEncoding() {
  105.       return this.getHeaderField("content-encoding");
  106.    }
  107.  
  108.    public long getExpiration() {
  109.       return this.getHeaderFieldDate("expires", 0L);
  110.    }
  111.  
  112.    public long getDate() {
  113.       return this.getHeaderFieldDate("date", 0L);
  114.    }
  115.  
  116.    public long getLastModified() {
  117.       return this.getHeaderFieldDate("last-modified", 0L);
  118.    }
  119.  
  120.    public String getHeaderField(String var1) {
  121.       return null;
  122.    }
  123.  
  124.    public Map<String, List<String>> getHeaderFields() {
  125.       return Collections.EMPTY_MAP;
  126.    }
  127.  
  128.    public int getHeaderFieldInt(String var1, int var2) {
  129.       String var3 = this.getHeaderField(var1);
  130.  
  131.       try {
  132.          return Integer.parseInt(var3);
  133.       } catch (Exception var5) {
  134.          return var2;
  135.       }
  136.    }
  137.  
  138.    public long getHeaderFieldDate(String var1, long var2) {
  139.       String var4 = this.getHeaderField(var1);
  140.  
  141.       try {
  142.          return Date.parse(var4);
  143.       } catch (Exception var6) {
  144.          return var2;
  145.       }
  146.    }
  147.  
  148.    public String getHeaderFieldKey(int var1) {
  149.       return null;
  150.    }
  151.  
  152.    public String getHeaderField(int var1) {
  153.       return null;
  154.    }
  155.  
  156.    public Object getContent() throws IOException {
  157.       this.getInputStream();
  158.       return this.getContentHandler().getContent(this);
  159.    }
  160.  
  161.    public Object getContent(Class[] var1) throws IOException {
  162.       this.getInputStream();
  163.       return this.getContentHandler().getContent(this, var1);
  164.    }
  165.  
  166.    public Permission getPermission() throws IOException {
  167.       return SecurityConstants.ALL_PERMISSION;
  168.    }
  169.  
  170.    public InputStream getInputStream() throws IOException {
  171.       throw new UnknownServiceException("protocol doesn't support input");
  172.    }
  173.  
  174.    public OutputStream getOutputStream() throws IOException {
  175.       throw new UnknownServiceException("protocol doesn't support output");
  176.    }
  177.  
  178.    public String toString() {
  179.       return this.getClass().getName() + ":" + this.url;
  180.    }
  181.  
  182.    public void setDoInput(boolean var1) {
  183.       if (this.connected) {
  184.          throw new IllegalStateException("Already connected");
  185.       } else {
  186.          this.doInput = var1;
  187.       }
  188.    }
  189.  
  190.    public boolean getDoInput() {
  191.       return this.doInput;
  192.    }
  193.  
  194.    public void setDoOutput(boolean var1) {
  195.       if (this.connected) {
  196.          throw new IllegalStateException("Already connected");
  197.       } else {
  198.          this.doOutput = var1;
  199.       }
  200.    }
  201.  
  202.    public boolean getDoOutput() {
  203.       return this.doOutput;
  204.    }
  205.  
  206.    public void setAllowUserInteraction(boolean var1) {
  207.       if (this.connected) {
  208.          throw new IllegalStateException("Already connected");
  209.       } else {
  210.          this.allowUserInteraction = var1;
  211.       }
  212.    }
  213.  
  214.    public boolean getAllowUserInteraction() {
  215.       return this.allowUserInteraction;
  216.    }
  217.  
  218.    public static void setDefaultAllowUserInteraction(boolean var0) {
  219.       defaultAllowUserInteraction = var0;
  220.    }
  221.  
  222.    public static boolean getDefaultAllowUserInteraction() {
  223.       return defaultAllowUserInteraction;
  224.    }
  225.  
  226.    public void setUseCaches(boolean var1) {
  227.       if (this.connected) {
  228.          throw new IllegalStateException("Already connected");
  229.       } else {
  230.          this.useCaches = var1;
  231.       }
  232.    }
  233.  
  234.    public boolean getUseCaches() {
  235.       return this.useCaches;
  236.    }
  237.  
  238.    public void setIfModifiedSince(long var1) {
  239.       if (this.connected) {
  240.          throw new IllegalStateException("Already connected");
  241.       } else {
  242.          this.ifModifiedSince = var1;
  243.       }
  244.    }
  245.  
  246.    public long getIfModifiedSince() {
  247.       return this.ifModifiedSince;
  248.    }
  249.  
  250.    public boolean getDefaultUseCaches() {
  251.       return defaultUseCaches;
  252.    }
  253.  
  254.    public void setDefaultUseCaches(boolean var1) {
  255.       defaultUseCaches = var1;
  256.    }
  257.  
  258.    public void setRequestProperty(String var1, String var2) {
  259.       if (this.connected) {
  260.          throw new IllegalStateException("Already connected");
  261.       } else if (var1 == null) {
  262.          throw new NullPointerException("key is null");
  263.       } else {
  264.          if (this.requests == null) {
  265.             this.requests = new MessageHeader();
  266.          }
  267.  
  268.          this.requests.set(var1, var2);
  269.       }
  270.    }
  271.  
  272.    public void addRequestProperty(String var1, String var2) {
  273.       if (this.connected) {
  274.          throw new IllegalStateException("Already connected");
  275.       } else if (var1 == null) {
  276.          throw new NullPointerException("key is null");
  277.       } else {
  278.          if (this.requests == null) {
  279.             this.requests = new MessageHeader();
  280.          }
  281.  
  282.          this.requests.add(var1, var2);
  283.       }
  284.    }
  285.  
  286.    public String getRequestProperty(String var1) {
  287.       if (this.connected) {
  288.          throw new IllegalStateException("Already connected");
  289.       } else {
  290.          return this.requests == null ? null : this.requests.findValue(var1);
  291.       }
  292.    }
  293.  
  294.    public Map<String, List<String>> getRequestProperties() {
  295.       if (this.connected) {
  296.          throw new IllegalStateException("Already connected");
  297.       } else {
  298.          return this.requests == null ? Collections.EMPTY_MAP : this.requests.getHeaders((String[])null);
  299.       }
  300.    }
  301.  
  302.    /** @deprecated */
  303.    @Deprecated
  304.    public static void setDefaultRequestProperty(String var0, String var1) {
  305.    }
  306.  
  307.    /** @deprecated */
  308.    @Deprecated
  309.    public static String getDefaultRequestProperty(String var0) {
  310.       return null;
  311.    }
  312.  
  313.    public static synchronized void setContentHandlerFactory(ContentHandlerFactory var0) {
  314.       if (factory != null) {
  315.          throw new Error("factory already defined");
  316.       } else {
  317.          SecurityManager var1 = System.getSecurityManager();
  318.          if (var1 != null) {
  319.             var1.checkSetFactory();
  320.          }
  321.  
  322.          factory = var0;
  323.       }
  324.    }
  325.  
  326.    synchronized ContentHandler getContentHandler() throws UnknownServiceException {
  327.       String var1 = this.stripOffParameters(this.getContentType());
  328.       ContentHandler var2 = null;
  329.       if (var1 == null) {
  330.          throw new UnknownServiceException("no content-type");
  331.       } else {
  332.          try {
  333.             var2 = (ContentHandler)handlers.get(var1);
  334.             if (var2 != null) {
  335.                return var2;
  336.             }
  337.          } catch (Exception var5) {
  338.          }
  339.  
  340.          if (factory != null) {
  341.             var2 = factory.createContentHandler(var1);
  342.          }
  343.  
  344.          if (var2 == null) {
  345.             try {
  346.                var2 = this.lookupContentHandlerClassFor(var1);
  347.             } catch (Exception var4) {
  348.                var4.printStackTrace();
  349.                var2 = UnknownContentHandlerP;
  350.             }
  351.  
  352.             handlers.put(var1, var2);
  353.          }
  354.  
  355.          return var2;
  356.       }
  357.    }
  358.  
  359.    private String stripOffParameters(String var1) {
  360.       if (var1 == null) {
  361.          return null;
  362.       } else {
  363.          int var2 = var1.indexOf(59);
  364.          return var2 > 0 ? var1.substring(0, var2) : var1;
  365.       }
  366.    }
  367.  
  368.    private ContentHandler lookupContentHandlerClassFor(String var1) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
  369.       String var2 = this.typeToPackageName(var1);
  370.       String var3 = this.getContentHandlerPkgPrefixes();
  371.       StringTokenizer var4 = new StringTokenizer(var3, "|");
  372.  
  373.       while(var4.hasMoreTokens()) {
  374.          String var5 = var4.nextToken().trim();
  375.  
  376.          try {
  377.             String var6 = var5 + "." + var2;
  378.             Class var7 = null;
  379.  
  380.             try {
  381.                var7 = Class.forName(var6);
  382.             } catch (ClassNotFoundException var10) {
  383.                ClassLoader var9 = ClassLoader.getSystemClassLoader();
  384.                if (var9 != null) {
  385.                   var7 = var9.loadClass(var6);
  386.                }
  387.             }
  388.  
  389.             if (var7 != null) {
  390.                ContentHandler var8 = (ContentHandler)var7.newInstance();
  391.                return var8;
  392.             }
  393.          } catch (Exception var11) {
  394.          }
  395.       }
  396.  
  397.       return UnknownContentHandlerP;
  398.    }
  399.  
  400.    private String typeToPackageName(String var1) {
  401.       var1 = var1.toLowerCase();
  402.       int var2 = var1.length();
  403.       char[] var3 = new char[var2];
  404.       var1.getChars(0, var2, var3, 0);
  405.  
  406.       for(int var4 = 0; var4 < var2; ++var4) {
  407.          char var5 = var3[var4];
  408.          if (var5 == '/') {
  409.             var3[var4] = '.';
  410.          } else if (('A' > var5 || var5 > 'Z') && ('a' > var5 || var5 > 'z') && ('0' > var5 || var5 > '9')) {
  411.             var3[var4] = '_';
  412.          }
  413.       }
  414.  
  415.       return new String(var3);
  416.    }
  417.  
  418.    private String getContentHandlerPkgPrefixes() {
  419.       String var1 = (String)AccessController.doPrivileged(new GetPropertyAction("java.content.handler.pkgs", ""));
  420.       if (var1 != "") {
  421.          var1 = var1 + "|";
  422.       }
  423.  
  424.       return var1 + "sun.net.www.content";
  425.    }
  426.  
  427.    public static String guessContentTypeFromName(String var0) {
  428.       return getFileNameMap().getContentTypeFor(var0);
  429.    }
  430.  
  431.    public static String guessContentTypeFromStream(InputStream var0) throws IOException {
  432.       if (!var0.markSupported()) {
  433.          return null;
  434.       } else {
  435.          var0.mark(12);
  436.          int var1 = var0.read();
  437.          int var2 = var0.read();
  438.          int var3 = var0.read();
  439.          int var4 = var0.read();
  440.          int var5 = var0.read();
  441.          int var6 = var0.read();
  442.          int var7 = var0.read();
  443.          int var8 = var0.read();
  444.          int var9 = var0.read();
  445.          int var10 = var0.read();
  446.          int var11 = var0.read();
  447.          var0.reset();
  448.          if (var1 == 202 && var2 == 254 && var3 == 186 && var4 == 190) {
  449.             return "application/java-vm";
  450.          } else if (var1 == 172 && var2 == 237) {
  451.             return "application/x-java-serialized-object";
  452.          } else {
  453.             if (var1 == 60) {
  454.                if (var2 == 33 || var2 == 104 && (var3 == 116 && var4 == 109 && var5 == 108 || var3 == 101 && var4 == 97 && var5 == 100) || var2 == 98 && var3 == 111 && var4 == 100 && var5 == 121 || var2 == 72 && (var3 == 84 && var4 == 77 && var5 == 76 || var3 == 69 && var4 == 65 && var5 == 68) || var2 == 66 && var3 == 79 && var4 == 68 && var5 == 89) {
  455.                   return "text/html";
  456.                }
  457.  
  458.                if (var2 == 63 && var3 == 120 && var4 == 109 && var5 == 108 && var6 == 32) {
  459.                   return "application/xml";
  460.                }
  461.             }
  462.  
  463.             if (var1 == 254 && var2 == 255 && var3 == 0 && var4 == 60 && var5 == 0 && var6 == 63 && var7 == 0 && var8 == 120) {
  464.                return "application/xml";
  465.             } else if (var1 == 255 && var2 == 254 && var3 == 60 && var4 == 0 && var5 == 63 && var6 == 0 && var7 == 120 && var8 == 0) {
  466.                return "application/xml";
  467.             } else if (var1 == 71 && var2 == 73 && var3 == 70 && var4 == 56) {
  468.                return "image/gif";
  469.             } else if (var1 == 35 && var2 == 100 && var3 == 101 && var4 == 102) {
  470.                return "image/x-bitmap";
  471.             } else if (var1 == 33 && var2 == 32 && var3 == 88 && var4 == 80 && var5 == 77 && var6 == 50) {
  472.                return "image/x-pixmap";
  473.             } else if (var1 == 137 && var2 == 80 && var3 == 78 && var4 == 71 && var5 == 13 && var6 == 10 && var7 == 26 && var8 == 10) {
  474.                return "image/png";
  475.             } else {
  476.                if (var1 == 255 && var2 == 216 && var3 == 255) {
  477.                   if (var4 == 224) {
  478.                      return "image/jpeg";
  479.                   }
  480.  
  481.                   if (var4 == 225 && var7 == 69 && var8 == 120 && var9 == 105 && var10 == 102 && var11 == 0) {
  482.                      return "image/jpeg";
  483.                   }
  484.  
  485.                   if (var4 == 238) {
  486.                      return "image/jpg";
  487.                   }
  488.                }
  489.  
  490.                if (var1 == 208 && var2 == 207 && var3 == 17 && var4 == 224 && var5 == 161 && var6 == 177 && var7 == 26 && var8 == 225 && checkfpx(var0)) {
  491.                   return "image/vnd.fpx";
  492.                } else if (var1 == 46 && var2 == 115 && var3 == 110 && var4 == 100) {
  493.                   return "audio/basic";
  494.                } else if (var1 == 100 && var2 == 110 && var3 == 115 && var4 == 46) {
  495.                   return "audio/basic";
  496.                } else if (var1 == 82 && var2 == 73 && var3 == 70 && var4 == 70) {
  497.                   return "audio/x-wav";
  498.                } else {
  499.                   return null;
  500.                }
  501.             }
  502.          }
  503.       }
  504.    }
  505.  
  506.    private static boolean checkfpx(InputStream var0) throws IOException {
  507.       var0.mark(256);
  508.       long var1 = 28L;
  509.       long var3;
  510.       if ((var3 = skipForward(var0, var1)) < var1) {
  511.          var0.reset();
  512.          return false;
  513.       } else {
  514.          int[] var5 = new int[16];
  515.          if (readBytes(var5, 2, var0) < 0) {
  516.             var0.reset();
  517.             return false;
  518.          } else {
  519.             int var6 = var5[0];
  520.             var3 += 2L;
  521.             if (readBytes(var5, 2, var0) < 0) {
  522.                var0.reset();
  523.                return false;
  524.             } else {
  525.                int var17;
  526.                if (var6 == 254) {
  527.                   var17 = var5[0];
  528.                   var17 += var5[1] << 8;
  529.                } else {
  530.                   var17 = var5[0] << 8;
  531.                   var17 += var5[1];
  532.                }
  533.  
  534.                var3 += 2L;
  535.                var1 = 48L - var3;
  536.                long var8 = 0L;
  537.                if ((var8 = skipForward(var0, var1)) < var1) {
  538.                   var0.reset();
  539.                   return false;
  540.                } else {
  541.                   var3 += var8;
  542.                   if (readBytes(var5, 4, var0) < 0) {
  543.                      var0.reset();
  544.                      return false;
  545.                   } else {
  546.                      int var22;
  547.                      if (var6 == 254) {
  548.                         var22 = var5[0];
  549.                         var22 += var5[1] << 8;
  550.                         var22 += var5[2] << 16;
  551.                         var22 += var5[3] << 24;
  552.                      } else {
  553.                         var22 = var5[0] << 24;
  554.                         var22 += var5[1] << 16;
  555.                         var22 += var5[2] << 8;
  556.                         var22 += var5[3];
  557.                      }
  558.  
  559.                      var3 += 4L;
  560.                      var0.reset();
  561.                      var1 = 512L + (long)(1 << var17) * (long)var22 + 80L;
  562.                      if (var1 < 0L) {
  563.                         return false;
  564.                      } else {
  565.                         var0.mark((int)var1 + 48);
  566.                         if (skipForward(var0, var1) < var1) {
  567.                            var0.reset();
  568.                            return false;
  569.                         } else if (readBytes(var5, 16, var0) < 0) {
  570.                            var0.reset();
  571.                            return false;
  572.                         } else if (var6 == 254 && var5[0] == 0 && var5[2] == 97 && var5[3] == 86 && var5[4] == 84 && var5[5] == 193 && var5[6] == 206 && var5[7] == 17 && var5[8] == 133 && var5[9] == 83 && var5[10] == 0 && var5[11] == 170 && var5[12] == 0 && var5[13] == 161 && var5[14] == 249 && var5[15] == 91) {
  573.                            var0.reset();
  574.                            return true;
  575.                         } else if (var5[3] == 0 && var5[1] == 97 && var5[0] == 86 && var5[5] == 84 && var5[4] == 193 && var5[7] == 206 && var5[6] == 17 && var5[8] == 133 && var5[9] == 83 && var5[10] == 0 && var5[11] == 170 && var5[12] == 0 && var5[13] == 161 && var5[14] == 249 && var5[15] == 91) {
  576.                            var0.reset();
  577.                            return true;
  578.                         } else {
  579.                            var0.reset();
  580.                            return false;
  581.                         }
  582.                      }
  583.                   }
  584.                }
  585.             }
  586.          }
  587.       }
  588.    }
  589.  
  590.    private static int readBytes(int[] var0, int var1, InputStream var2) throws IOException {
  591.       byte[] var3 = new byte[var1];
  592.       if (var2.read(var3, 0, var1) < var1) {
  593.          return -1;
  594.       } else {
  595.          for(int var4 = 0; var4 < var1; ++var4) {
  596.             var0[var4] = var3[var4] & 255;
  597.          }
  598.  
  599.          return 0;
  600.       }
  601.    }
  602.  
  603.    private static long skipForward(InputStream var0, long var1) throws IOException {
  604.       long var3 = 0L;
  605.  
  606.       long var5;
  607.       for(var5 = 0L; var5 != var1; var5 += var3) {
  608.          var3 = var0.skip(var1 - var5);
  609.          if (var3 <= 0L) {
  610.             if (var0.read() == -1) {
  611.                return var5;
  612.             }
  613.  
  614.             ++var5;
  615.          }
  616.       }
  617.  
  618.       return var5;
  619.    }
  620.  
  621.    // $FF: synthetic method
  622.    static FileNameMap access$000() {
  623.       return fileNameMap;
  624.    }
  625. }
  626.